/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package logica;


import fisica.CapaFisica;
import fisica.DomicilioFisica;
import hibernate.objeto.Domicilio;
import hibernate.objeto.Paciente;
import presentacion.CapaPresentacion;

/**
 *
 * @author Gonzalo
 */
public class DomicilioLogica extends CapaLogica {

    /**
     * Crea y persiste el domicilio para el paciente.
     *
     * @param datosPaciente Los datos del paciente
     * @param idDomicilio El arreglo en donde se guarda el id del objeto
     * Domicilio creado para su posterior recuperación
     * @return true si se agregó/modificó correctamente, false en caso contrario
     */
    public static boolean agregarOModificarDomicilio(Object[] datosPaciente,
            int[] idDomicilio) {
        //Crea el objeto
        Domicilio domicilio = crearUObtenerObjetoDomicilio(datosPaciente);

        //Persiste el objeto
        if (CapaFisica.guardarOActualizarObjeto(domicilio)) {
            idDomicilio[0] = domicilio.getIdDomicilio();
            return true;
        } else {
            return false;
        }
    }

    /**
     * Crea/modifica un objeto domicilio con los datos pasados por parámetro.
     *
     * @param datosPaciente Los datos del paciente
     * @return El objeto Domicilio creado
     */
    private static Domicilio crearUObtenerObjetoDomicilio(Object[] datosPaciente){
        Domicilio domicilio = null;
        Paciente pacienteTemp =
                PacienteLogica.getPacientePorDocumento(
                datosPaciente[PERSONA_TIPO_DE_DOCUMENTO].toString(),
                datosPaciente[PERSONA_NUMERO_DE_DOCUMENTO].toString());
        if (pacienteTemp != null) {
            domicilio = pacienteTemp.getDomicilio();
        }
        //Si el paciente no tiene domicilio, la creo
        if (domicilio == null) {
            domicilio = new Domicilio();
        }

        domicilio.setExtranjeroDomicilio(
                datosPaciente[CapaLogica.PACIENTE_RESIDE_EN_EL_EXTRANJERO].
                toString());

        domicilio.setDireccionDomicilio(eliminarEspaciosMuertos(
                datosPaciente[CapaLogica.PACIENTE_DOMICILIO].toString()));

        domicilio.setLocalidad(LocalidadLogica.getLocalidadPorNombreYNombreProvincia(
                datosPaciente[CapaLogica.PACIENTE_LOCALIDAD].toString(),
                datosPaciente[CapaLogica.PACIENTE_PROVINCIA].toString()));

        domicilio.setCodigoPostal(eliminarEspaciosMuertos(
                    datosPaciente[CapaLogica.PACIENTE_CODIGO_POSTAL].toString()));

        return domicilio;
    }

    /**
     * Retorna el objeto Domicilio según el id.
     *
     * @param idDomicilio El id del domicilio
     * @return El objeto Domicilio consultado, null si no existe
     */
    public static Domicilio getDomicilioPorId(int idDomicilio) {
        return DomicilioFisica.getDomicilioPorId(idDomicilio);
    }

    /**
     * Retorna el texto HTML correspondiente a la descripcion del domicilio.
     *
     * @param domicilio El paciente
     * @return El String que contiene el HTML
     */
    public static String getDomicilioHTML(Domicilio domicilio) {
        String domicilioHTML = "";
        
        if (domicilio != null) {
            domicilioHTML =
                    "<font size=\"3\" face=\"arial\" color=\"blue\">DOMICILIO</font><br> " +
                    "<font size=\"3\" face=\"arial\" color=\"black\">Reside en el extranjero: </font>"
                    + "<font size=\"3\" face=\"arial\">" +
                    domicilio.getExtranjeroDomicilio() + "</font><br>" +
                    "<font size=\"3\" face=\"arial\" color=\"black\">Dirección: </font>"
                    + "<font size=\"3\" face=\"arial\">" +
                    CapaLogica.separarCalle(domicilioHTML) + "</font><br>" +
                    "<font size=\"3\" face=\"arial\" color=\"black\">Piso: </font>"
                    + "<font size=\"3\" face=\"arial\">" +
                    CapaLogica.separarPiso(domicilioHTML) + "</font><br>" +
                    "<font size=\"3\" face=\"arial\" color=\"black\">Departamento: </font>"
                    + "<font size=\"3\" face=\"arial\">" +
                    CapaLogica.separarDepartamento(domicilioHTML) + "</font><br>" +
                    LocalidadLogica.getLocalidadHTML(domicilio.getLocalidad()) +
                    "<font size=\"3\" face=\"arial\" color=\"black\">Código postal: </font>"
                    + "<font size=\"3\" face=\"arial\">" +
                    domicilio.getCodigoPostal() + "</font><br>";            
        } else{
            domicilioHTML = "<font size=\"3\" face=\"arial\" color=\"blue\">DOMICILIO</font><br><br> " +
                    "<hr /><font size=\"3\" face=\"arial\">No posee</font><br></font><hr />";
        }
        return domicilioHTML;
    }

}
